Ensuring that a computer network is operating correctly and efficiently often requires collecting and analyzing data about the computer network. Typically this can be achieved by writing a custom program that gathers selected data from specified sources and analyzes the data using a chosen criteria specifically programmed for the selected data. However, when the computer network changes or other criteria are desired to be analyzed, the new custom programs have to be developed. This is often costly and inefficient as well as difficult to develop. As the requirements change over time, often the entire costly process of code development must be performed again, despite how minor the change is to the network.